package com.beta.mapper;

import com.baomidou.mybatisplus.mapper.AutoMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.beta.dto.product.ProductItemDto;
import com.beta.dto.product.ProductItemOptions;
import com.beta.dto.product.ProductItemQuantityDto;
import com.beta.entity.ProductItems;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ProductItems 表数据库控制层接口
 */
public interface ProductItemsMapper extends AutoMapper<ProductItems> {

    ProductItemDto selectOneById(@Param("id") Integer productItemId);

    List<ProductItemDto> selectBatchByIds(@Param("ids") List<Integer> productItemIds);

    List<ProductItemDto> selectByCategoryId(Page<ProductItemDto> page, @Param("categoryId") int categoryId, @Param("cityCode") String cityCode);

    List<ProductItemDto> selectProductByUserId(Page<ProductItemDto> page, @Param("userId") Integer userId, @Param("cityCode") String cityCode);

    List<ProductItemOptions> selectProductItemOptionsBatch(@Param("productItemIds") List<Integer> productItemIds);

    void reduceProductItemQuantity(ProductItemQuantityDto productItemQuantityDto);

    void restoreProductItemQuantity(ProductItemQuantityDto productItemQuantityDto);

    List<ProductItemDto> selectBySearch(Page<ProductItemDto> page, @Param("keywords") String keywords, @Param("cityCode") String cityCode);

    List<ProductItemDto> selectDealerProductItems(Page<ProductItemDto> page, @Param("userId") Integer userId, @Param("cityCode") String cityCode);

}